package eu.hellek.gba.server.rpc.servlets;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import eu.hellek.gba.proto.LoginInfoProtos.LoginInfo;
import eu.hellek.gba.proto.LoginInfoProtos.LoginInfo.Builder;
import eu.hellek.gba.proto.LoginInfoProtos.LoginInfo.UserFavouritePositionProxy;
import eu.hellek.gba.server.rpc.ExtractedFunctions;
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
service(req, resp);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
service(req, resp);
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//PrintWriter out = resp.getWriter();
//req.getSession().setAttribute("date", new Date());
eu.hellek.gba.shared.LoginInfo res = new ExtractedFunctions().login("");
List<UserFavouritePositionProxy> favs = new ArrayList<UserFavouritePositionProxy>();
if(res.getFavourites() != null) {
for(eu.hellek.gba.shared.UserFavouritePositionProxy ufpp : res.getFavourites()) {
UserFavouritePositionProxy neu = UserFavouritePositionProxy.newBuilder().setKey(ufpp.getKey()).setLat(ufpp.getLat()).setLon(ufpp.getLon()).setName(ufpp.getName()).build();
favs.add(neu);
}
}
Builder builder = LoginInfo.newBuilder();
if(res.getEmailAddress() != null) {
builder.setEmailAddress(res.getEmailAddress());
}
if(res.getNickname() != null) {
builder.setNickname(res.getNickname());
}
if(res.getLoginUrl() != null) {
builder.setLoginUrl(res.getLoginUrl());
}
if(res.getLogoutUrl() != null) {
builder.setLogoutUrl(res.getLogoutUrl());
}
builder.addAllFavourites(favs).setLoggedIn(res.isLoggedIn());
LoginInfo toSend = builder.build();
//resp.setContentType("application/x-protobuf");
//resp.setContentLength(toSend.getSerializedSize());
toSend.writeTo(resp.getOutputStream());
//resp.flushBuffer();
//resp.getWriter().close();
}
}